package com.wlz.curd.test;

import com.wlz.curd.entity.Emp;
import com.wlz.curd.impl.PE;
import com.wlz.curd.impl.SE;

import java.util.ArrayList;
import java.util.Scanner;


public class EmpBiz {
	ArrayList<Emp> list = new ArrayList<>();
	Scanner in = new Scanner(System.in);
	/**
	 * curd��ɾ�Ĳ�
	 */
	public void curd(){
		System.out.println("-----------------------------------");
		System.out.println("\t1.����Ա��");
		System.out.println("\t2.�鿴Ա��");
		System.out.println("\t3.ɾ��Ա��");
		System.out.println("\t4.�˳�");
		System.out.println("-----------------------------------");
		System.out.print("��ѡ��:");
		switch (in.nextInt()) {
		case 1:
			add();
			break;
		case 2:
			show();
			break;
		case 3:
			delete();
			break;
		case 4:
			System.out.println("ллʹ��!");
			System.exit(0);
		default:
			error();
			break;
		}
		curd();
	}
	public void error() {
		System.out.println("�������,����������!");
	}
	/**
	 * �жϱ���Ƿ��ظ�
	 * @return �ظ�����true
	 */
	public boolean isHave(Emp emp) {
		for (Emp e : list) {
			if (e.equals(emp)) {
				return true;
			}
		}
		return false;
	}
	/**
	 * ���Ա��
	 */
	public void add() {
		Emp emp1 = new PE();
		Emp emp2 = new SE();
		System.out.print("������Ա�����:");
		int empNo = in.nextInt();
		emp1.setEmpNo(empNo);
		emp2.setEmpNo(empNo);
		if (isHave(emp1) || isHave(emp2)) {
			System.out.println("����ӵ�Ա������Ѵ���!");
		}else {
			System.out.print("������Ա������:");
			String empName = in.next();
			emp1.setEmpName(empName);
			emp2.setEmpName(empName);
			System.out.print("������Ա����������:");
			int empMoney = in.nextInt();
			emp1.setEmpMoney(empMoney);
			emp2.setEmpMoney(empMoney);
			System.out.print("������Ա����λ(1.��Ŀ����,2.����Ա):");
			switch (in.nextInt()) {
			case 1:
				list.add(emp1);
				list.get(list.size()-1).setEmpJob("��Ŀ����");
				PE pe =(PE) list.get(list.size()-1);
				System.out.print("��������Ŀ����:");
				pe.setBonus(in.nextInt());
				break;
			case 2:
				list.add(emp2);
				list.get(list.size()-1).setEmpJob("����Ա");
				SE se =(SE) list.get(list.size()-1);
				System.out.print("�����빤������:");
				se.setYears(in.nextInt());
				break;
			default:
				error();
				break;
			}
			System.out.print("�������,�Ƿ����(y/n):");
			if ('y'==in.next().charAt(0))
				add();
			else
				curd();
		}
	}
	/**
	 * �鿴Ա��
	 */
	private void show() {
		System.out.println("---------------------------------------------------------------------");
		System.out.println("Ա�����\tԱ������\t��λ\t����");
		for (Emp emp : list) {
			System.out.println(emp.getEmpNo()+"\t"+emp.getEmpName()+"\t"+emp.getEmpJob()+"\t"+emp.calcMoney());
		}
		System.out.println("---------------------------------------------------------------------");
	}
	/**
	 * ɾ��Ա��
	 */
	private void delete() {
		boolean flag = false;
		if (list.size()==0) {
			System.out.println("��ʱû��Ա���ɹ�ɾ��!");
		}else {
			System.out.print("������Ҫɾ����Ա�����:");
			int empNo = in.nextInt();
			for (Emp emp : list) {
				if (emp.getEmpNo() == empNo) {
					flag = true;
					System.out.println("��Ҫɾ����Ա����ϢΪ:");
					System.out.println("\tԱ�����:"+emp.getEmpNo());
					System.out.println("\tԱ������:"+emp.getEmpName());
					System.out.println("\t��λ:"+emp.getEmpJob());
					System.out.println("\t��������:"+emp.getEmpMoney());
					if (emp instanceof PE) {
						System.out.println("\t��Ŀ����:"+((PE) emp).getBonus());
					}else {
						System.out.println("\t��������:"+((SE) emp).getYears());
					}
					System.out.print("�Ƿ�ȷ��(y/n):");
					if ('y' == in.next().charAt(0)) {
						list.remove(emp);
						System.out.println("ɾ���ɹ�!");
					}else {
						System.out.println("ɾ��ʧ��!");
					}
				}
			}
			if (!flag) {
				System.out.println("�������Ա����Ų�����!");
			}
		}
	}
}
